System and method for identifying cabinetry

ABSTRACT

Systems and methods for analyzing image data to identify cabinet products are disclosed. A computer-implemented method may include receiving, from an electronic device via a network connection, at least one digital image depicting a cabinet. The method also may include analyzing, by one or more processors, the at least one digital image to determine a first set of characteristics of the cabinet. Additionally, the method may include accessing, by the one or more processors from memory, a second set of characteristics corresponding to a plurality of cabinet products and comparing the first set of characteristics to the second set of characteristics to identify a cabinet product of the plurality of cabinet products that matches the cabinet. Further, the method may include transmitting, to the electronic device via the network connection, an indication of the cabinet product.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority to and the benefit of the filing dateof U.S. Provisional Patent Application No. 63/037,268, entitled “Systemand Method for Identifying Cabinetry,” filed on Jun. 10, 2020. Theentire contents of which are hereby incorporated herein by reference.

TECHNICAL FIELD

The present disclosure generally relates to systems and methods foridentifying cabinet products and, more particularly, to systems andmethods for identifying cabinet products by analyzing digital images.

BACKGROUND

Generally, if cabinetry in a home or property becomes damaged, thehomeowner seeks to repair or replace the damaged cabinetry. However,often only a portion of the cabinets in a room may be damaged. Forexample, an individual cabinet among several cabinets in a kitchen mayneed repair. If the homeowner, or a claim representative of thehomeowner's insurance provider, cannot locate a replacement cabinet orcabinet product matching the other cabinets, a homeowner may need toreplace all of the cabinets, resulting in increased expense.

Manually identifying a cabinetry product can be a difficult taskrequiring substantial training and experience. While some experiencedprofessionals may be able to identify a “match” with an existing product(i.e., an exact match or a similar replacement product) with fairly highconfidence, it may be costly, time consuming, or otherwise not feasibleto access such professionals. Further, while object recognition softwaremay be capable of identifying that an object in a photograph is acabinet, current systems are not capable of identifying a precisecabinet product (e.g., of a specific manufacturer or brand).

Accordingly, there is an opportunity for techniques to automaticallyidentify cabinet products.

SUMMARY

In one embodiment, a computer-implemented method of cabinet productidentification is provided. The method includes receiving, from anelectronic device via a network connection, at least one digital imagedepicting a cabinet. The method also includes analyzing, by one or moreprocessors, the at least one digital image to determine a first set ofcharacteristics of the cabinet. The method further includes accessing,by the one or more processors from memory, a second set ofcharacteristics corresponding to a plurality of cabinet products andcomparing the first set of characteristics to the second set ofcharacteristics to identify a cabinet product of the plurality ofcabinet products that matches the cabinet. Further, the method includestransmitting, to the electronic device via the network connection, anindication of the cabinet product.

In another embodiment, a computing system for cabinet productidentification is provided. The computing system includes a transceiverin communication with an electronic device via a network connection, oneor more processors, and a program memory storing instructions. Whenexecuted by the one or more processors, the instructions cause the oneor more processors to: (1) receive, from an electronic device via thetransceiver, at least one digital image depicting a cabinet; (2) analyzethe at least one digital image to determine a first set ofcharacteristics of the cabinet; (3) access from memory a second set ofcharacteristics corresponding to a plurality of cabinet products; (4)compare the first set of characteristics to the second set ofcharacteristics to identify a cabinet product of the plurality ofcabinet products that matches the cabinet; and (5) transmit, to theelectronic device via the transceiver, an indication of the cabinetproduct.

BRIEF DESCRIPTION OF THE DRAWINGS

The figures described below depict various aspects of the system andmethods disclosed therein. It should be understood that each figuredepicts an embodiment of a particular aspect of the disclosed system andmethods, and that each of the figures is intended to accord with apossible embodiment thereof. Further, whenever possible, the followingdescription refers to the reference numerals included in the followingfigures, in which features depicted in multiple figures are designatedwith consistent reference numerals.

FIG. 1 depicts a block diagram of an example system for identifyingcabinet products, in accordance with some embodiments;

FIGS. 2A-2B depict an example cabinet product that may be identifiedusing the techniques disclosed herein;

FIG. 3 depicts a block diagram of an example platform for generating andapplying machine learning models to identify cabinet products, inaccordance with some embodiments;

FIG. 4 depicts a signal diagram associated with identifying cabinetproducts, in accordance with some embodiments;

FIGS. 5A-5B depict example interfaces for capturing an image of acabinet and receiving an indication of an identified cabinet product, inaccordance with some embodiments; and

FIG. 6 depicts a flow diagram of an exemplary method of cabinet productidentification.

DETAILED DESCRIPTION

The present embodiments may relate to system and methods for, interalia, analyzing digital images in order to identify matching cabinetproducts and locating available replacement cabinet products.Conventionally, manual techniques are used to examine a damaged cabinetproduct and to identify matching cabinet products. However, thesetechniques are expensive and inefficient, and generally requireextensive training. To alleviate these shortcomings, the presentembodiments incorporate image processing to effectively, efficiently,and accurately identify a cabinet product.

According to certain aspects, systems and methods may capture and/oraccess digital image data that depicts a cabinet, and analyze thedigital image data to determine a set of characteristics of the cabinet.For example, an individual (e.g., a homeowner or insurance claimrepresentative) can use a mobile device to capture one or more images ofa cabinet, send the images to a server via a wireless link, and receivefrom the server information indicating a matching and/or similar cabinetproduct. The mobile device may execute a software application thatguides the individual through the process of taking one or more imagesof the cabinet, sending the pictures to the server, and receivinginformation from the server (e.g., an indication of a matching and/orsimilar product or products, identified characteristics of the cabinet,etc.), for example.

To identify a cabinet product matching a cabinet depicted in an image,the server may utilize one or more image processing techniques todetermine a set of characteristics of the cabinet. The server cancompare the identified characteristics to characteristics correspondingto known cabinet products that are stored in a memory, such as acharacteristics database. Based on the comparison, the server canidentify a known cabinet product with characteristics matching those ofthe cabinet in the image (e.g., within a particular tolerance). In somescenarios, the server may apply a machine learning model trained usingimages of known cabinet products to locate a known cabinet product withcharacteristics matching any characteristics of the cabinet extractedfrom the image.

As used in this disclosure, “cabinet product” can refer to a completecabinet or to one or more cabinet components (e.g., a cabinet box,drawers, doors, cabinet framing, molding, hardware, etc.) Accordingly,the cabinet product that the server identifies as a matching cabinetproduct may be a complete cabinet that matches the unknown cabinet inthe image, or may be a cabinet component that matches the unknowncabinet in the image (e.g., any combination of one or more of a cabinetbox, drawers, doors, cabinet framing, hardware, molding, etc.). Forexample, the server may identify a molding product that matches moldingof the unknown cabinet, or a cabinet door that matches the door of theunknown cabinet.

The identification of the cabinet product can be used in various ways,depending on the implementation and/or scenario. For example, ahomeowner or insurance claim representative may use the identifiedproduct to estimate a cost of replacement or repair. A homeowner canreplace a damaged cabinet with the matching cabinet, avoiding excesscosts associated with replacing all of the cabinets in a room or home.As another example, the measurements and identified characteristics canalso be exported to rendering and/or computer-aided design (CAD)software to produce models of identified products.

The systems and methods disclosed herein offer numerous benefits. Inparticular, by analyzing image data, the systems and methods are able toaccurately determine cabinet characteristics and identify matchingcabinet products. These techniques are performed automatically by acomputer system, increasing the speed and accuracy of cabinetidentification techniques and eliminating subjective manual techniques.It should be appreciated that other benefits are envisioned.

The systems and methods discussed herein address a challenge that isparticular to technology associated with identifying cabinet products.In particular, the challenge relates to a difficulty in effectively andefficiently identifying a cabinet product. In conventional situations,entities rely on human judgement to identify a cabinet product, which isoften time-consuming and/or inaccurate. In contrast, the systems andmethods utilize image processing techniques to analyze image datadepicting cabinets and identify cabinet products that may be depicted inthe image data. Therefore, because the systems and methods employ thecollection, analysis, and communication of image data, the systems andmethods are necessarily rooted in computer technology in order toovercome the noted shortcomings that specifically arise in the realm oftechnology associated with identifying cabinet products.

FIG. 1 depicts an example system 100 configured to implement the cabinetproduct identification techniques of this disclosure. It should beappreciated that the system 100 is merely an example and thatalternative or additional components are envisioned.

The system 100 may include a client device 110 configured to communicatewith a server 140 via a network 130. The network 130 may include anysuitable combination or wired and/or wireless communication networks,and may support any type of data communication via any standard ortechnology (e.g., GSM, CDMA, TDMA, WCDMA, LTE, EDGE, OFDM, GPRS, EV-DO,UWB, Internet, IEEE 802 including Ethernet, WiMAX, Wi-Fi, Bluetooth, andothers).

The server 140 may include a communication interface 142, an imageprocessing unit 144, an identification unit 146, and an indication unit148. In other embodiments, the server may include additional, fewer, ordifferent components and/or units than those shown in FIG. 1 . Thecommunication interface 142 may be configured to communicate with (i.e.,transmit data to and receive data from) remote computing devices,including the client device 110, via the network 130. The communicationinterface 142 may include multiple different communication interfaces,such as multiple hardware ports and associated software and/or firmware.For example, the communication interface 142 may include one or moretransceivers (e.g., WWAN, WLAN, and/or WPAN transceivers) functioning inaccordance with IEEE standards, 3GPP standards, or other standards.

As will be discussed in greater detail below, the image processing unit144 may generally be configured to identify the cabinet products basedupon the determined characteristics (and a cabinet productcharacteristics database 149 communicatively coupled to the server 140),and the indication unit 148 may generally be configured to sendinformation corresponding to the output of the identification unit 146to one or more computing devices (e.g., the client device 110) and/orcomputing systems (e.g., a claim processing or underwriting system).

In one implementation, each of units 144, 146, and 148 is, or includes,a respective set of one or more processors that executes softwareinstructions to perform the functions described in this disclosure, orsome or all of the units 144, 146, and 148 may share a set of one ormore processors. In some implementations, one or more of the units 144,146, and 148 may be a component of software that is stored on acomputer-readable medium (e.g., a non-volatile memory of the sever 140)and is executed by one or more processors of the server 140.

The client device 110 may be any type of electronic device such as asmartphone, tablet, phablet, laptop, or any other suitable computingdevice. While FIG. 1 illustrates only a single client device, it shouldbe appreciated that any number of client devices may communicate withthe server 140. The client device may include a central processing unit(CPU) 112, a graphics processing unit (GPU) 114, a user interface 120, adisplay 116, a communication interface 122, an image capture device 124,a memory 118, and an image memory 126. In other embodiments, however,the client device 110 may include additional, fewer, or differentcomponents and/or units that those shown in FIG. 1 . For example, theclient device 110 may include additional input/output devices such as amicrophone and/or speaker.

The memory 118 may include a computer-readable, non-transitory storagedevice having any combination of volatile (e.g., random access memory(RAM) and/or non-volatile memory (e.g., read only memory (ROM), Flash,etc.). The memory 118 may store instructions that, when executed by theCPU 112 and/or the GPU 114, cause the CPU 112 and/or the GPU 114 toperform various functions, such as the functions described in thisdisclosure. The image memory 126 may store images captured by the imagecapture device 124, and/or images obtained from an external source. Theimage memory 146 may include a non-volatile memory, for example.

The display 116 may include a screen (e.g., smartphone or tablet screen,or laptop monitor) for displaying information to a user. The userinterface 120 may be configured to enable a user to interact with theclient device 110. For example, the user interface 120 may include aninteractive feature of the display 116 (e.g., the display 116 may be atouchscreen), a keyboard, a voice input device, and/or any othersuitable user-input device(s).

The communication interface 122 may include one or more communicationinterfaces such as hardware, software, and/or firmware of an interfacefor enabling communications via a cellular network, a WiFi network, orany other suitable network such as the network 130. The client device110 may be configured to communicate with the server 140 via thecommunication interface 122.

The image capture device 124 is configured to capture digital images.The image capture device 124 may be implemented as a camera integratedwithin the client device 110, or, in some embodiments, may be externaland communicatively coupled to the client device 110. For example, theimage capture device 124 may be an external camera communicativelycoupled to the client device 110 via a Bluetooth link. A user mayoperate the image capture device 124 to capture one or more digitalimage(s) of one or more cabinet product(s), and the client device 110may store the image(s) in the image memory 146, or in another memory notshown in FIG. 1 (e.g., a cloud-based memory external from the clientdevice 110). Each image may depict one more cabinet products.

In some implementations, the client device 110 may execute a dedicatedsoftware application (e.g., an application corresponding to instructionsstored in the memory 118 or at a cloud-based memory) that facilitatesthe cabinet identification techniques of this disclosure. For example,the application may, when executed by the CPU 112 and/or the GPU 114,cause the display 116 to present to the user of the client device 110 agraphical user interface (GUI). The GUI may include one or moreinteractive controls that enable the user to capture the image(s) of thecabinet products with the image capture device 124, and/or toselect/retrieve image(s) stored in the image memory 126 or from anothermemory communicatively coupled to the client device 110. The interactivecontrols may also enable the user to retrieve notifications received atthe client device 110 indicating a matching or similar cabinet product.Exemplary interfaces of such an application are discussed below withrespect to FIGS. 5A-5B.

The image(s) of the cabinet products may be transferred from the clientdevice 110 to the server 140 via any suitable method. For example, ifthe client device 110 is executing the application discussed above, theGUI may include a first interactive control that enables the user tocapture new cabinet product images or select previously taken imagesstored in the image memory 146, and a second interactive control thatenables the user to send captured and/or selected images from the clientdevice 110 to the server 140 (e.g., directly via the communicationinterface 130, or by causing a cloud-based server to send the image(s)to the server 140).

The server 140 can receive the images via the communication interface142. The image processing unit 144 can analyze the images using one ormore image processing techniques and/or object recognition techniques todetermine a set of characteristics of the cabinet (or cabinet product)depicted in the image. Example characteristics are discussed below withreference to FIG. 2A-2B.

After the image processing unit 144 has determined a set ofcharacteristics of the cabinet depicted in the images, theidentification unit 146 may use the determined characteristic set toidentify a cabinet product with matching characteristics (or similar,e.g., within a predetermined tolerance). To identify a matching product,the identification unit 146 may access a memory of the server 140 or acabinet product characteristics database 149. The cabinet productcharacteristics database 149 may be a memory internal or external to theserver 140. In some implementations, the database 149 is implementedusing cloud technology and may reside on a distributed network ofcomputing devices rather than a single computing device. Further, thedatabase 149 may include multiple databases, which may be operated bydifferent entities.

The cabinet product characteristics database 149 may include tables orother suitable data structures storing characteristics associated withknown cabinet products. For example, an entry in the database 149 maycorrespond to a particular product and include characteristics (e.g.manufacturer, color, dimensions, etc.) of that product. The databaseentries may also indicate a cost of the product and/or locations (e.g.,a retail store or website) where the product is available for purchase.The database 149 may be maintained by an entity, such as an insuranceprovider, associated with the server 140, or by one or morethird-parties. For example, the database 149 may include databasesoperated by or more cabinet product manufacturers, and each database mayinclude entries corresponding to products made by a respective cabinetproduct manufacturer.

In some implementations, entries in the database 149 may be generated bythe server 140, or by another computing device communicatively connectedto the database 149. For example, the image processing unit 144 mayidentify characteristics of a known cabinet product, and store thecharacteristics in an entry corresponding to the known cabinet product.A human may manually check the identified characteristics to ensure thatthe stored characteristics are accurate. In some implementations,machine learning techniques may be utilized to identify characteristicsof known products. For example, a machine learning model may be trained,using a training set including images of known cabinet products, toidentify image features corresponding to cabinet characteristics. Themachine learning model can be applied to images of known cabinetproducts to extract characteristics of the products, and can store theseextracted characteristics in entries corresponding to the products inthe database 149. Such machine learning techniques are described belowwith reference to FIG. 3 .

The identification unit 146 may compare the characteristics of thecabinet identified by the image processing unit 144 to thecharacteristics of the cabinet products in the database 149 to identifyone or more cabinet products matching the cabinet. The rules oralgorithms for determining whether a particular product in the database149 matches (or is similar to) the cabinet in the images may varyaccording to different embodiments, as will be described with respect toFIGS. 2A-2B. Further, machine learning techniques may be utilized toidentify, based on identified characteristics, a matching cabinetproduct. As will be discussed with reference to FIG. 3 , the functionsof one or both of the image processing unit 144 and the identificationunit 146 may be performed by one or more machine learning models.

After the identification unit 146 has identified one or more matching(and/or similar) product(s), the indication unit 148 may transmit anindication of the matching product(s) to at least one computing devicevia the communication interface 142. In some implementations, theindication unit 148 may transmit the indication to the client device110. For example, the indication unit 148 can generate a messageincluding information corresponding to the matching product(s) andtransmit this message to the client device 110, via the communicationinterface 142. If the client device 110 executes a dedicated softwareapplication, the GUI of the application may present the information onthe display 116 of the client device 110, as discussed with reference toFIG. 5B. Additionally or alternatively, the indication unit 148 maytransmit the indication to another computing device not depicted in FIG.1 , such as a computing device associated with an insurance provider.Such a computing device may use the information to automaticallypopulate one or more data fields relating to an insurance claim (e.g.,to facilitate determining a repair or settlement cost).

The indication may include information corresponding to the matchingproduct(s), such as an identification of the product(s) (e.g., amanufacturer, a part or model number, a product name, etc.). Theindication may also include information indicating where a matchingproduct is available for purchase (e.g., the name, contact information,website link, and/or address of a retail store or retailer). Dependingon the embodiment, the indication may indicate whether the product is“matching” (e.g., similar above a first threshold), or similar (e.g.,similar below the first threshold but above a second threshold). Theserver 140 may retrieve the information corresponding to the matchingproduct(s) from the database 149. In some embodiments, the server 140may retrieve additional information from another data source (e.g., adatabase and/or a server of a manufacturer of a matching product) afterthe identification unit 146 identifies a matching product.

While this disclosure primarily refers to the server 140 as performingcabinet product identification (e.g., the functions of the units 144,146, and 148), the client device 110 can implement some or all of thefunctionality of the server 140, depending on the implementation and/orscenario. For example, the client device 110 may include one or more ofthe image processing unit 144, the identification unit 146, or theindication unit 148, and may access the database 149 via the network130.

Example characteristics of a cabinet, and techniques to (i) identify and(ii) match these characteristics to a known cabinet product, arediscussed below with reference to FIGS. 2-6 .

FIGS. 2A-2B depicts an example cabinet product that the components ofFIG. 1A can identify using the techniques within this disclosure. FIG.2A depicts a first view of a cabinet 200, and FIG. 2B depicts a secondview of the cabinet 200. Accordingly, FIGS. 2A-2B may correspond todifferent images of the cabinet 200 captured from different viewingangles and/or in different scenarios. For example, FIG. 2B shows thecabinet 200 of FIG. 2A after a drawer 208 and a cabinet door 214 of thecabinet have been opened. The cabinet 200 may include a top panel 202,side panel 204, front panel 212, top molding 206, bottom molding 218,drawer 208, and a cabinet door 214. The cabinet 200 also may includehardware such as a drawer pull 210 or door handle 216.

Based on images of the cabinet 200, the image processing unit 144 candetermine characteristics of the cabinet 200 and/or the components ofthe cabinet 200 (e.g., panels 202, 204, 208, moldings 206 and 218,drawer 208, door 214, pull 210, or handle 216). The image processingunit 144 may determine a characteristic based on one image, or based ona combination of multiple images, which may or may not depict thecabinet from different angles or in different scenarios (e.g., with thedoors and/or drawers closed). In some implementations, the imageprocessing unit 144 may determine a first value of a characteristicbased on one image, and a second value of the same characteristic basedon another image, and compare the values to ensure a consistent result.The image processing unit 144 may determine multiple characteristicsbased on the same image, or based on different images.

As a first example of the characteristics the image processing unit canidentify, the image processing unit 144 can determine a material type,color, texture, or finish of the cabinet 200 or a component of thecabinet 200. If the cabinet 200 is made of wood, the image processingunit 144 can determine a wood type and/or wood grain used in the cabinet200. The server 140 can also determine a manufacturer or brand of thecabinet 200. In some implementations, the server 140 can determine amanufacturer or brand based on a marking appearing in the digital image(e.g., a sticker, label, tag, logo, etc.). For example, the imageprocessing unit 144 may identify a marking as a logo or band marking,and the identification unit 146 may match the marking to a particularmanufacturer. Alternatively or in addition, the server 140 can determinethe manufacturer by determining other characteristics of the cabinet andcomparing these determined characteristics to those of themanufacturer's products. The image processing unit 144 may alsodetermine a number of drawers and/or doors of the cabinet 200.

Additional characteristics the image processing unit 144 can determineinclude various dimensions of the cabinet. For example, the imageprocessing unit 144 may identify a depth 220 and width 222 of the toppanel 202, which may be covered by a countertop (e.g., a kitchencounter). Other dimensions include a depth 224 of the side panel 204 orthe cabinet 200, a height 226 of the front panel 212, a width of thefront panel 212, a distance 228 between the molding 206 or top of thecabinet 200 and the drawer 208, a distance 238 between the drawer 208and the door 214, a distance 240 between the cabinet door 214 and sideof the cabinet 200, a distance between the bottom of the door 214 andthe molding 218 or bottom of the cabinet 200, a width 232 and a height230 of the drawer 208, and a width 234 and a height 236 of the door 214.If the drawer 208 and the door 214 are open in the images, the imageprocessing unit 144 can determine other dimensions such as the depth 252of the drawer. FIGS. 2A-2B include labels for several dimensions of thecabinet 200, but it should be appreciated that the image processing unit144 can determine a dimension of any portion of the cabinet 200, orcabinet component, that is depicted in one or more images. The imageprocessing unit 144 can also analyze several images in combination inorder to estimate a dimension of a component that appears in more thanone image.

Additionally, the image processing unit 144 can determine a type of thecabinet 200. For example, the image processing unit 144 can determinewhether the cabinet 200 is an upper, lower, or island cabinet. The imageprocessing unit 144 may determine the type based on images of thecabinet 200 alone, or of the cabinet 200 and other cabinets arrangednext to or in the same room as the cabinet 200. While or after capturingan image, for example, a user can indicate a particular cabinet ofinterest among neighboring cabinets by interacting with the GUI of adedicated software application.

The image processing unit 144 can also determine a design or decorativestyle of the cabinet 200, or of a particular component of the cabinets,such as the drawer 208 or the door 214. Example door and/or drawerdesigns include: slab or flat panel, raised panel, recessed panel, etc.Example styles include shaker, modern, louvered, cathedral, etc. Theimage processing unit 144 can also determine whether the door 214includes glass.

Further, the image processing unit 144 may also determine types and/orstyles of trim and/or molding (e.g., the moldings 206 and 208) of thecabinet 200. The door 214 and/or drawer 208 may also include moldingthat the image processing unit 144 can identify. The GUI may presentinstructions to a user to capture one or images of the molding such thatthe image processing unit 144 can determine a cross-section of themolding and thus determine a style of the molding.

Additional characteristics the image processing unit 144 can identifymay relate to cabinet hardware. For example, the image processing unit144 can determine the number and placement of drawer pulls, doorhandles, and other hardware (e.g., such as the drawer pull 210 andhandle 216). The image processing unit 144 may also determine a type(e.g., whether hardware is for a cabinet drawer or door), shape, style,etc. of hardware.

Using images of the cabinet with the door 214 in an open position, as inFIG. 2B, the image processing unit 144 can determine additionalcharacteristics of the cabinet 200. For example, the image processingunit 144 can determine a number, style, and/or placement of one or morehinge(s) 258. As another example, the image processing unit 144 candetermine a frame style of the cabinet (e.g. whether the cabinet 200includes a face frame 254 and/or a central rail 256).

In addition, by analyzing characteristics of the cabinet 200 that theimage processing unit 144 identifies, the server 140 may determinefurther characteristics. For instance, by analyzing identifiedcharacteristics, the server 140 may determine that the cabinet 200 is acustom cabinet or a pre-fabricated cabinet. The server 140 also maydetermine that the cabinet 200 is of high quality or low quality (e.g.,based on correlating the identified characteristics to characteristicsassociated with cabinets above or below a predetermined cost or value).

The server 140 may also determine characteristics of the cabinet 200based on other information provided by the client device 110 in additionto images. In some implementations, a dedicated software application maypresent, via the display 116 or other output device (e.g., a speaker) ofthe client device 120, prompts to a user requesting additionalinformation regarding the cabinet 200. For example, the application canprompt the user to indicate (e.g., by making a selection using the userinterface 120) whether the drawer 208 is a soft- or slow-close drawer,whether the cabinet interior includes shelves that pull out, or othersuitable questions that may assist the identification.

The identification unit 146 analyzes the identified characteristics ofthe cabinet 200 to determine one or more matching (and/or similar)cabinet product(s). As mentioned above, the rules or algorithms fordetermining whether a particular product in the database 149 matches (oris similar to) the cabinet 200 may vary according to differentembodiments.

To determine a matching cabinet product, the identification unit 146 cancompare the identified characteristics to the characteristics in thedatabase 149. For the identification unit 146 to identify a cabinetproduct as a “matching” cabinet product, the cabinet product may need tohave one or more (e.g., two, three, or other predetermined number)characteristics that match the identified characteristics set, or mayneed to have characteristics that match a certain proportion of theidentified characteristics (e.g., more than 70%, 80%, or 90%). Theidentification unit 146 may determine that a product matches the cabinet200 if the characteristics in the database 149 are within predeterminedtolerances of the corresponding characteristics in the identifiedcharacteristic set (or vice versa).

How the identification unit 146 identifies a matching characteristic mayvary by the type of characteristic. For example, a matching color mayhave similar (e.g., as determined based on a measured color distance)RGB color values to an identified color. A matching dimension may besimilar to within a suitable threshold of an identified measurement(e.g., within the uncertainty of the estimated measurements of the imageprocessing unit 146, or within thresholds on the order of centimeters ormillimeters).

Based on the number and/or proportion of identified characteristics thatmatch a given product, and/or how well (e.g., within what threshold)each characteristic matches the corresponding identified characteristic,the identification unit 146 may calculate a similarity score. Thesimilarity score may be based on a qualitative scale (e.g., includingscores such as “matching,” “high,” or “low”), or on a quantitative scale(e.g., from 0-100 or 0-10). To determine the similarity score, theidentification unit 146 may weight different characteristicsdifferently. For example, whether the dimensions, door, and/or drawerstyle of the cabinet 200 match a known product may be weighted more thanwhether the hardware style matches, as hardware can be an after-marketaddition made by an entity different than the original cabinetmanufacturer.

As mentioned above, in some embodiments, the image processing unit 144and/or the identification unit 146 may be implemented using machinelearning techniques. For instance, the image processing unit 144 mayapply a first machine learning model to image data to identify imagefeatures corresponding to cabinet characteristics, such as thosediscussed above. The identification unit 146 may apply a second machinelearning model to match identified characteristics to a cabinet product.The input to the second machine learning model, identified cabinetcharacteristics, may be the output from the first machine learningmodel, or may be the output of other image processing or objectdetection techniques. In some embodiments, the functions of the imageprocessing unit 144 and the identification unit 146 may be combined, andmay both be performed by a single machine learning model. The machinelearning model may, for example, take an image as input, and produce aprediction of the cabinet product depicted in the image. FIG. 3 depictsan example environment in which devices may generate and operate machinelearning model(s) to perform the above-described functionalities.

In particular, FIG. 3 depicts an example environment 300 in which a setof input data 351 is processed into predictor output data 352 via acabinet identification platform 355, according to embodiments. In oneimplementation, the set of input data 351 may be a training dataset. Thecabinet identification platform 355 may be implemented on the server 140of FIG. 1A, or on another computing device communicatively coupled tothe server 140 via the network 130. In some implementations, the cabinetidentification platform 355 may be implemented on the client device 110.

Components of the cabinet identification platform 355 may include, butare not limited to, a processing unit (e.g., processor(s) 356), a systemmemory (e.g., memory 357), and a system bus 358 that couples varioussystem components including the memory 357 to the processor(s) 356. Thecabinet identification platform 355 may further include variouscommunication components (e.g., transceivers and ports) that mayfacilitate data communication with one or more additional computingdevices, such as the server 140 and the client device 110.

In some embodiments, the processor(s) 356 may include one or moreparallel processing units capable of processing data in parallel withone another. The system bus 358 may be any of several types of busstructures including a memory bus or memory controller, a peripheralbus, or a local bus, and may use any suitable bus architecture. By wayof example, and not limitation, such architectures include the IndustryStandard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus,Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA)local bus, and Peripheral Component Interconnect (PCI) bus (also knownas Mezzanine bus).

The cabinet identification platform 355 may further include a userinterface 353 configured to present content (e.g., the content of theinput data 351 and information associated therewith). Additionally, auser may make selections to the content via the user interface 353, suchas to navigate through different information, review certain input data,and/or perform other actions. The user interface 353 may be embodied aspart of a touchscreen configured to sense touch interactions andgestures by the user. Although not shown, other system componentscommunicatively coupled to the system bus 358 may include input devicessuch as a cursor control device (e.g., a mouse, trackball, touch pad,etc.) and keyboard (not shown). A monitor or other type of displaydevice may also be connected to the system bus 358 via an interface,such as a video interface. In addition to the monitor, the cabinetidentification platform 355 may also include other peripheral outputdevices such as a printer, which may be connected through an outputperipheral interface (not shown).

The memory 357 may include a variety of computer-readable media.Computer-readable media may be any available media that can be accessedby the cabinet identification platform 355 and may include both volatileand nonvolatile media, and both removable and non-removable media. Byway of non-limiting example, computer-readable media may comprisecomputer readable storage media, which may include volatile andnonvolatile, removable and non-removable media implemented in any methodor technology for storage of information such as computer-readableinstructions, routines, applications (e.g., a cabinet product predictorapplication 360), data structures, program modules, or other data.

Computer storage media may include, but is not limited to, RAM, ROM,EEPROM, FLASH memory or other memory technology, CD-ROM, digitalversatile disks (DVD) or other optical disk storage, magnetic cassettes,magnetic tape, magnetic disk storage or other magnetic storage devices,or any other medium which can be used to store the desired informationand which can be accessed by the processor(s) 356 of the cabinetidentification platform 355.

The cabinet identification platform 355 may store and execute thecabinet product predictor application 360. The cabinet product predictorapplication 360 may employ machine learning techniques such as, forexample, a regression analysis (e.g., a logistic regression, linearregression, or polynomial regression), k-nearest neighbors, decisiontrees, random forests, boosting, neural networks, support vectormachines, deep learning, reinforcement learning, Bayesian networks, orthe like. When the data 351 is a training dataset, the cabinet productpredictor application 360 may analyze/process the data 351 to generatethe machine learning model for storage as part of machine learning data363 that may be stored in the memory 357.

When the data 351 comprises data associated with a cabinet to beanalyzed using the machine learning model, the cabinet product predictorapplication 360 may analyze or process the data 351 using the machinelearning model to generate a set of output values. Additionally, thecabinet product predictor application 360 may add, to the machinelearning model, additional cabinet product identification results sothat the cabinet product predictor application 360 may use the updatedmachine learning model in subsequent input data analysis.

As a first example, the input data 351 may include a training datasetincluding image data depicting cabinets. The cabinet product predictorapplication 360 may generate a first machine learning model by trainingthe model to identify cabinet characteristics from the image data. Afterthe first machine learning model is trained, the input data 351 mayinclude images depicting an unknown cabinet, such as images received atthe server 140 and captured by the client device 110. The cabinetproduct predictor application 360 may analyze the data 351 using thefirst machine learning model to generate predictor output data 352including identified cabinet characteristics of the depicted cabinet. Inthis example, the image processing unit 144 discussed with reference toFIG. 1 may utilize the first machine learning model to identify cabinetcharacteristics. Further, the first machine learning model may beapplied to images of known cabinet products, and the results may bestored in the cabinet product characteristics database 149, as discussedabove.

As a second example, the input data 351 may include a training datasetincluding image data and/or descriptions of cabinet characteristics. Forexample, the training data set may include images of known cabinetproducts and/or characteristics of the known cabinet products. In someembodiments, the training dataset may include data from the cabinetproduct characteristics database 149. The cabinet product predictorapplication 360 may generate a second machine learning model by trainingthe model to identify a cabinet product matching the cabinetcharacteristics. After the second machine learning model is trained, theinput data 351 may include cabinet characteristics of an unknowncabinet. The cabinet characteristics of the unknown cabinet may becharacteristics identified by the first machine learning model or byother image processing or object detection techniques. The cabinetproduct predictor application 360 may analyze the data 351 using thesecond machine learning model to generate predictor output data 352including an identified cabinet product matching the cabinetcharacteristics of the unknown cabinet and/or one or more similarcabinet products. In this example, the identification unit 146 mayutilize the second machine learning model to identify a matchingproduct.

In various embodiments, the cabinet identification platform 140 maytrain and apply a machine learning model that can perform the functionsof both the first and the second example machine learning models (i.e.,the functions of both the image processing unit 144 and theidentification unit 146). For example, the input data 351 may includeimages depicting an unknown cabinet, such as images received at theserver 140 and captured by the client device 110. The cabinet productpredictor application 360 may analyze the data 351 using the machinelearning model to generate predictor output data 352 including anidentified cabinet product matching the depicted cabinet (and/or one ormore similar cabinet products). The predictor output data 352 may alsoinclude identified characteristics of the depicted cabinet.

The cabinet identification platform 355 can pass the predictor outputdata 352 to, for example, the identification unit 146 for furtherprocessing if the predictor output data 352 includes identifiedcharacteristics of the cabinet, or to the indication unit 148.

For further clarity, FIG. 4 depicts a signal diagram 400 associated withidentifying cabinet products, in accordance with some embodiments. Thesignal diagram 400 may begin when the client device 110 captures 402 oneor more image(s) depicting a cabinet. For example, the image capturedevice 124 may capture the image(s). In some embodiments, the clientdevice 110 may capture the image(s) via a dedicated software applicationimplemented on the client device 110. The client device 110 may presentinstructions to a user of the client device 110 regarding how to capturethe image(s). Further, the client device 110 may perform initialprocessing, or transmit the image(s) to the server 140 for initialprocessing. The initial processing may determine whether the image(s)are of a high enough quality (e.g., number of pixels, depict a cabinetin accordance with the presented instructions, etc.). The client device110 then transmits 404 the image(s) to the server 140.

The image processing unit 144 of the server 140 analyzes the image(s) todetermine characteristics of the depicted cabinet. The image processingunit 144, for example, can analyze the image(s) using a machine learningmodel, as discussed above with reference to FIG. 3 . Alternatively oradditionally, the image processing unit 144 can analyze the image(s)using any suitable object detection techniques, such as deep learningtechniques, auto encoders, multilayer perceptron (MLP) models, neuralnetworks such as recurrent neural networks (RNN), restricted Boltzmannmachines (RBM), self-organizing maps (SOM), self-organizing feature maps(SOFM), or convolutional neural networks, and/or other types of models,techniques, algorithms, calculations, or the like. The image processingunit 144 provides 408 the identified cabinet characteristics to theidentification unit 146 for further processing. In some embodiments, theimage processing unit 144 may also provide 410 the identified cabinetcharacteristics to the indication unit 148.

The identification unit 146 of the server 140 compares 412 theidentified cabinet characteristics to characteristics of known cabinetproducts. The identification unit 146 may access characteristics ofknown cabinet products stored in the cabinet product characteristicsdatabase 149 or a memory of the server 140. In some embodiments, theidentification unit 146 may perform the comparison by analyzing theidentified cabinet characteristics using a machine learning modeltrained using data from the cabinet product characteristics database, asdiscussed above with reference to FIG. 3 .

Based on the analysis, the identification unit 146 identifies 414 one ormore matching cabinet products. A matching cabinet product can be acomplete cabinet or one or more cabinet components (e.g., a cabinet box,drawers, doors, cabinet framing, molding, hardware, etc.). Additionallyor alternatively, the identification unit 146 may identify one or moresimilar cabinet products. Similar cabinet products may “match” thedepicted cabinet within a larger threshold than a “matching” cabinetproduct. The identification unit 146 provides 416 an identification ofthe one or more matching (and/or similar) product(s) to the indicationunit 148. In some implementations, functions of the image processingunit 144 and the identification unit 146 may be performed using amachine learning model that both identifies cabinet characteristics andidentifies matching and/or similar cabinet product(s).

The indication unit 148 of the server 140 transmits 418, via thecommunication interface 142, an indication of the matching (and/orsimilar) product(s) to the client device 110. As discussed above, theindication may include information corresponding to the matching (and/orsimilar) product(s), such as an identification of the product(s) (e.g.,a manufacturer, a part or model number, a product name, etc.). Theindication may also include information indicating where a matchingproduct is available for purchase (e.g., the name, contact information,website link, and/or address of a retail store or retailer). Dependingon the embodiment, the indication may indicate whether the product is“matching” (e.g., similar above a first threshold), or similar (e.g.,similar below the first threshold but above a second threshold). Theclient device 110 can present the indication, or information based onthe indication, on the display 116, as will be discussed in more detailwith reference to FIG. 5B.

FIGS. 5A-5B depict exemplary interfaces 500 and 550, respectively,associated with the techniques disclosed herein. The client device 110may present the interfaces 500 and 550 on the display 116 as instancesof a GUI of a dedicated software application. Additionally oralternatively, the client device 110 may present one or both of theinterfaces 500 and 550 based on user selections in a web browser.

The client device 110 may display the interface 500, depicted in FIG.5A, when a user is capturing an image of a cabinet 504. The interface500 may include an overlay 506 that the client device 110 cansuperimpose over the view of the image capture device 124. The interface500 may include instructions that guide a user to capture variousimages. For example, an instruction 508 may instruct a user to positionthe cabinet 504 within the overlay 506 before capturing an image. Otherinstructions may guide a user on what images to capture, from whichangles, and how to position the cabinet 504. For instance, aninstruction may ask the user to open the drawers and/or doors of thecabinet 504 before capturing an image, as in FIG. 2B.

The interface 500 may also include a user-selectable option 510 tocapture an image. After an image is captured, the client device 110 mayprompt the user to capture additional pictures of the cabinet 504. Theclient device 110 may prompt the user to capture a replacement picture,for example if the client device 110 determines that the quality of theimage is too low for proper processing, or if the captured image doesnot comply with the instructions. The client device 110 may present newinstructions guiding the user on how to capture an improved image, suchas “try capturing the image with additional ambient light.”

After the client device 110 captures one or more image(s), and theseimage(s) are processed using the techniques disclosed herein, the clientdevice 110 may present the interface 550, depicted in FIG. 5B, whichincludes the results of the analysis. The interface 550 can display anyof the information that the server 140 transmits to the client device110 at the event 418. For example, the interface 550 may include anindication 554 of a “best” match (i.e., a matching cabinet product“Product X”). The interface 550 may also include an indication 556 of a“similar” match (i.e., a similar cabinet product “Product Y”, which maybe similar to the cabinet 504 within a larger tolerance than thematching cabinet product). The indications 554 and 556 may includeuser-selectable options a user can select to receive additionalinformation concerning the products and/or links to a website where theproducts are available for purchase. The indications 554 and 556 mayalso indicate an estimate of the confidence in the predicted matching orsimilar cabinet product. For example, the confidence may be 100%, 90%,80%, etc. In some embodiments, the interface 550 may include identifiedcabinet characteristics of the cabinet 504, such as the color, style,dimensions, material, etc.

In some implementations, the interface 550 may include a user-selectableoption 558 that a user can select to “try again” or otherwise indicateto the client device 110 that the matching or similar cabinet productsare not acceptable matches to the cabinet 504. The client device 110 canrequest that the server 104 re-process the existing images, or canprompt the user for additional information or images of the cabinet 504,and can re-initialize the image processing. The interface 550 may alsoinclude a user-selectable option 560 that a user can select toinitialize the process for a different cabinet or using differentimages.

In one example, the interface 550 may include a user-selectable option562 that a user can select to submit the matching and/or similaridentified cabinet product to an insurer. The client device 110 maytransmit the information to the server 140, or to another computingdevice, which may populate one or more fields relating to an insuranceclaim relating to the cabinet 504 (e.g., to facilitate determining arepair or settlement cost).

FIG. 6 depicts a flow diagram of an exemplary method 600 of cabinetidentification. The method 600 can be implemented as a set ofinstructions stored on a computer-readable memory and executable on oneor more processors. The method 600 may be performed by one or moreprocessors of the server 140, for example, or of the client device 110.The method 600 may begin when the processors receive (block 602) atleast one digital image depicting a cabinet from an electronic device(e.g., the client device 110) via a network connection (e.g., aconnection to the network 130 via the communication interface 142)(e.g., event 404 of FIG. 4 ). For example, the processors may receivethe digital image from a camera (e.g., the image capture device 124) ofthe electronic device that captured the digital image. In someimplementations, the processors may receive the digital image inresponse to transmitting a request for a digital image depicting adigital image depicting a particular view of the cabinet.

The processors may analyze (block 604) the at least one digital image todetermine a first set of characteristics of the cabinet (e.g., event406). The first set of characteristics may include, for example: amaterial type, a manufacturer, a brand, a cabinet measurement, a doormeasurement, a door style, a molding style, a type of hinge, a hingelocation, a hardware location, a frame style, whether the cabinet is acustom cabinet or a pre-fabricated cabinet, etc. The processors mayanalyze the digital image using any suitable object detection technique,such as a machine learning model.

The processors may access (block 606), from memory (e.g., from thecabinet product characteristics database 149), a second set ofcharacteristics corresponding to a plurality of cabinet products. Next,the processors may compare (block 608) the first set of characteristicsto the second set of characteristics to identify a cabinet product ofthe plurality of cabinet products that matches the cabinet depicted inthe at least one digital image (e.g., events 412 and 414). Theprocessors may analyze the first of characteristics using a machinelearning model, which may be the same or different as a machine learningmodel that analyzes the digital image to determine characteristics ofthe cabinet. A machine learning model may be trained using one or moreof digital images of the plurality of cabinet products orcharacteristics of the plurality of cabinet products.

The processors may transmit, to the electronic device via the networkconnection, an indication of the cabinet product, such as anidentification of the cabinet product (e.g., event 418). In someimplementations, the processors may determine a retail store or awebsite where the cabinet product is available for purchase, andtransmit an indication of the retail store or the website to theelectronic device. Further, in some embodiments, the processors maytransmit an indication of the first set of characteristics to theelectronic device.

ADDITIONAL CONSIDERATIONS

Although the following text sets forth a detailed description ofnumerous different embodiments, it should be understood that the legalscope of the invention may be defined by the words of the claims setforth at the end of this patent. The detailed description is to beconstrued as exemplary only and does not describe every possibleembodiment, as describing every possible embodiment would beimpractical, if not impossible. One could implement numerous alternateembodiments, using either current technology or technology developedafter the filing date of this patent, which would still fall within thescope of the claims.

Throughout this specification, plural instances may implementcomponents, operations, or structures described as a single instance.Although individual operations of one or more methods are illustratedand described as separate operations, one or more of the individualoperations may be performed concurrently, and nothing requires that theoperations be performed in the order illustrated. Structures andfunctionality presented as separate components in example configurationsmay be implemented as a combined structure or component. Similarly,structures and functionality presented as a single component may beimplemented as separate components. These and other variations,modifications, additions, and improvements fall within the scope of thesubject matter herein.

Additionally, certain embodiments are described herein as includinglogic or a number of routines, subroutines, applications, orinstructions. These may constitute either software (e.g., code embodiedon a non-transitory, machine-readable medium) or hardware. In hardware,the routines, etc., are tangible units capable of performing certainoperations and may be configured or arranged in a certain manner. Inexample embodiments, one or more computer systems (e.g., a standalone,client or server computer system) or one or more hardware modules of acomputer system (e.g., a processor or a group of processors) may beconfigured by software (e.g., an application or application portion) asa hardware module that operates to perform certain operations asdescribed herein.

In various embodiments, a hardware module may be implementedmechanically or electronically. For example, a hardware module maycomprise dedicated circuitry or logic that may be permanently configured(e.g., as a special-purpose processor, such as a field programmable gatearray (FPGA) or an application-specific integrated circuit (ASIC)) toperform certain operations. A hardware module may also compriseprogrammable logic or circuitry (e.g., as encompassed within ageneral-purpose processor or other programmable processor) that may betemporarily configured by software to perform certain operations. Itwill be appreciated that the decision to implement a hardware modulemechanically, in dedicated and permanently configured circuitry, or intemporarily configured circuitry (e.g., configured by software) may bedriven by cost and time considerations.

Accordingly, the term “hardware module” should be understood toencompass a tangible entity, be that an entity that is physicallyconstructed, permanently configured (e.g., hardwired), or temporarilyconfigured (e.g., programmed) to operate in a certain manner or toperform certain operations described herein. Considering embodiments inwhich hardware modules are temporarily configured (e.g., programmed),each of the hardware modules need not be configured or instantiated atany one instance in time. For example, where the hardware modulescomprise a general-purpose processor configured using software, thegeneral-purpose processor may be configured as respective differenthardware modules at different times. Software may accordingly configurea processor, for example, to constitute a particular hardware module atone instance of time and to constitute a different hardware module at adifferent instance of time.

Hardware modules may provide information to, and receive informationfrom, other hardware modules. Accordingly, the described hardwaremodules may be regarded as being communicatively coupled. Where multipleof such hardware modules exist contemporaneously, communications may beachieved through signal transmission (e.g., over appropriate circuitsand buses) that connect the hardware modules. In embodiments in whichmultiple hardware modules are configured or instantiated at differenttimes, communications between such hardware modules may be achieved, forexample, through the storage and retrieval of information in memorystructures to which the multiple hardware modules have access. Forexample, one hardware module may perform an operation and store theoutput of that operation in a memory device to which it may becommunicatively coupled. A further hardware module may then, at a latertime, access the memory device to retrieve and process the storedoutput. Hardware modules may also initiate communications with input oroutput devices, and may operate on a resource (e.g., a collection ofinformation).

The various operations of example methods described herein may beperformed, at least partially, by one or more processors that aretemporarily configured (e.g., by software) or permanently configured toperform the relevant operations. Whether temporarily or permanentlyconfigured, such processors may constitute processor-implemented modulesthat operate to perform one or more operations or functions. The modulesreferred to herein may, in some example embodiments, compriseprocessor-implemented modules.

Similarly, the methods or routines described herein may be at leastpartially processor-implemented. For example, at least some of theoperations of a method may be performed by one or more processors orprocessor-implemented hardware modules. The performance of certain ofthe operations may be distributed among the one or more processors, notonly residing within a single machine, but deployed across a number ofmachines. In some example embodiments, the processor or processors maybe located in a single location (e.g., within a home environment, anoffice environment, or as a server farm), while in other embodiments theprocessors may be distributed across a number of locations.

The performance of certain of the operations may be distributed amongthe one or more processors, not only residing within a single machine,but deployed across a number of machines. In some example embodiments,the one or more processors or processor-implemented modules may belocated in a single geographic location (e.g., within a homeenvironment, an office environment, or a server farm). In other exampleembodiments, the one or more processors or processor-implemented modulesmay be distributed across a number of geographic locations.

Unless specifically stated otherwise, discussions herein using wordssuch as “processing,” “computing,” “calculating,” “determining,”“presenting,” “displaying,” or the like may refer to actions orprocesses of a machine (e.g., a computer) that manipulates or transformsdata represented as physical (e.g., electronic, magnetic, or optical)quantities within one or more memories (e.g., volatile memory,non-volatile memory, or a combination thereof), registers, or othermachine components that receive, store, transmit, or displayinformation.

As used herein any reference to “one embodiment” or “an embodiment”means that a particular element, feature, structure, or characteristicdescribed in connection with the embodiment may be included in at leastone embodiment. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment.

As used herein, the terms “comprises,” “comprising,” “may include,”“including,” “has,” “having” or any other variation thereof, areintended to cover a non-exclusive inclusion. For example, a process,method, article, or apparatus that comprises a list of elements is notnecessarily limited to only those elements but may include otherelements not expressly listed or inherent to such process, method,article, or apparatus. Further, unless expressly stated to the contrary,“or” refers to an inclusive or and not to an exclusive or. For example,a condition A or B is satisfied by any one of the following: A is true(or present) and B is false (or not present), A is false (or notpresent) and B is true (or present), and both A and B are true (orpresent).

In addition, use of the “a” or “an” are employed to describe elementsand components of the embodiments herein. This is done merely forconvenience and to give a general sense of the description. Thisdescription, and the claims that follow, should be read to include oneor at least one and the singular also may include the plural unless itis obvious that it is meant otherwise.

This detailed description is to be construed as examples and does notdescribe every possible embodiment, as describing every possibleembodiment would be impractical.

What is claimed:
 1. A computer-implemented method of cabinet productidentification, the method comprising: receiving, from an electronicdevice via a network connection, at least one digital image depicting acabinet; analyzing, by one or more processors, the at least one digitalimage to determine a first set of characteristics of the cabinet;accessing, by the one or more processors from memory, a second set ofcharacteristics corresponding to a plurality of cabinet products;comparing, by the one or more processors, the first set ofcharacteristics to the second set of characteristics to identify acabinet product of the plurality of cabinet products that matches thecabinet; and transmitting, to the electronic device via the networkconnection, an indication of the cabinet product.
 2. Thecomputer-implemented method of claim 1, wherein analyzing the at leastone digital image: analyzing the at least one digital image to determineone or more of: a material type, a manufacturer, a brand, a cabinetmeasurement, a door measurement, a door style, a molding style, a typeof hinge, a hinge location, a hardware location, or a frame style. 3.The computer-implemented method of claim 1, wherein analyzing the atleast one digital image includes: analyzing the at least one digitalimage to determine whether the cabinet is a custom cabinet or apre-fabricated cabinet.
 4. The computer-implemented method of claim 1,wherein receiving the at least one digital image includes: receiving theat least one digital image from a camera of the electronic device thatcaptured the at least one digital image depicting the cabinet.
 5. Thecomputer-implemented method of claim 1, further comprising: determining,by the one or more processors, a retail store or a website where thecabinet product is available for purchase; and transmitting, to theelectronic device via the network connection, an indication of theretail store or the website.
 6. The computer-implemented method of claim1, wherein receiving the at least one digital image includes:transmitting, to the electronic device via the network connection, arequest for a digital image depicting a particular view of the cabinet;receiving, in response to transmitting the request, the at least onedigital image.
 7. The computer-implemented method of claim 1, whereinanalyzing the at least one digital image includes: analyzing the atleast one digital image using a machine learning model.
 8. Thecomputer-implemented method of claim 1, wherein comparing the first setof characteristics to the second set of characteristics includes:analyzing the first set of characteristics using a machine learningmodel trained using one or more of the second set of characteristics orimage data including the plurality of cabinet products.
 9. Thecomputer-implemented method of claim 8, wherein analyzing the at leastone digital image includes: analyzing the at least one digital imageusing the machine learning model.
 10. The computer-implemented method ofclaim 1, further comprising: transmitting, to the electronic device viathe network connection, an indication of one or more characteristics ofthe first set of characteristics.
 11. A computing system for cabinetproduct identification, the computing system comprising: a transceiverin communication with an electronic device via a network connection; oneor more processors; and a program memory storing instructions that, whenexecuted by the one or more processors, cause the one or more processorsto: receive, from an electronic device via the transceiver, at least onedigital image depicting a cabinet; analyze the at least one digitalimage to determine a first set of characteristics of the cabinet; accessfrom memory a second set of characteristics corresponding to a pluralityof cabinet products; compare the first set of characteristics to thesecond set of characteristics to identify a cabinet product of theplurality of cabinet products that matches the cabinet; and transmit, tothe electronic device via the transceiver, an indication of the cabinetproduct.
 12. The system of claim 11, wherein the instructions cause theone or more processors to analyze the at least one digital image by:analyzing the at least one digital image to determine one or more of: amaterial type, a manufacturer, a brand, a cabinet measurement, a doormeasurement, a door style, a molding style, a type of hinge, a hingelocation, a hardware location, or a frame style.
 13. The system of claim11, wherein the instructions cause the one or more processors to analyzethe at least one digital image by: analyzing the at least one digitalimage to determine whether the cabinet is a custom cabinet or apre-fabricated cabinet.
 14. The system of claim 11, wherein theinstructions cause the one or more processors to receive the at leastone digital image by: receiving the at least one digital image from acamera of the electronic device that captured the at least one digitalimage depicting the cabinet.
 15. The system of claim 11, wherein theinstructions further cause the one or more processors to: determine aretail store or a website where the cabinet product is available forpurchase; and transmit, to the electronic device via the networkconnection, an indication of the retail store or the website.
 16. Thesystem of claim 11, wherein the instructions cause the one or moreprocessors to receive the at least one digital image by: transmitting,to the electronic device via the network connection, a request for adigital image depicting a particular view of the cabinet; receiving, inresponse to transmitting the request, the at least one digital image.17. The system of claim 11, wherein the instructions cause the one ormore processors to analyze the at least one digital image by: analyzingthe at least one digital image using a machine learning model.
 18. Thesystem of claim 11, wherein the instructions cause the one or moreprocessors to compare the first set of characteristics to the second setof characteristics by: analyzing the first set of characteristics usinga machine learning model trained using one or more of the second set ofcharacteristics or image data including the plurality of cabinetproducts.
 19. The system of claim 18, wherein the instructions cause theone or more processors to analyze the at least digital image by:analyzing the at least one digital image using the machine learningmodel.
 20. The system of claim 11, wherein the instructions furthercause the one or more processors to: transmit, to the electronic devicevia the network connection, an indication of one or more characteristicsof the first set of characteristics.